A processor is typically able to access cache memory more quickly than the processor can access other types of memory, such as a Random Access Memory (RAM) module or a hard drive. Cache memory is therefore often used to store data that is likely to be needed in the near future. When new data is to be written to a cache memory, it is preferable to overwrite data that has not been recently requested. Hence, new data is written either to a cache entry that corresponds to the address of the new data, or to a cache entry whose usage history indicates that the cache entry has not been recently written to or read from. Accurate determination and evaluation of cache entry usage histories often requires complex or otherwise inefficient implementations.